/*
 * Copyright 2004-2005 公司名
 * 本软件及其所有拷贝的名称，与光盘上或本软件中注明的公司同在。
 * 本软件及文档享有版权，并受国家版权法及国际协约条款的保护。
 * 您不可以从本软件中去掉其版权声明；并保证为本软件的拷贝（本部或部分）* 复制版权声明。
 * 您同意制止以任何形式非法拷贝本软件及文档。
 * 版权信息参见：
 *      http://www.companyname.cn/licenses
 */

package com.companyname.common.base.web.service;

import javax.servlet.http.HttpServletRequest;

import java.util.List;
import java.util.Vector;

import org.apache.log4j.Logger;

import com.companyname.common.base.manager.Manager;
import com.companyname.common.base.model.BaseObject;

/**
 * 删除models服务模板
 *
 */

public class DelModelsTempletService extends TempletService
{
        static Logger logger = Logger.getLogger(DelModelsTempletService.class);

        /** 获取要被删除的Ids */
        public String[] getDeletingIds(HttpServletRequest request)
          throws NullPointerException
        {
                String[] ids = request.getParameterValues("ids");
                if(ids == null)
                {
                        throw new NullPointerException("取待删除的实体的id失败:" + "无法从request中取得ids这个String[]");
                }
                else
                {
                        return ids;
                }
        }

        /** 获取待删除的models */
        public List getDeletingModels(HttpServletRequest request,
                                      Manager manager)
        {
                String[] ids = this.getDeletingIds(request);
                List models = new Vector(ids.length);
                for(int i = 0; i < ids.length; i ++)
                {
                        models.add(manager.get(ids[i]));
                }
                return models;
        }

        /** 执行服务 */
        public void executeService(HttpServletRequest request)
        {
                // 取得待删除的models
                List models = (List)request.getAttribute(this.manager.getEntityClass().getName());
                // 同一事务内删除
                this.manager.removeAll(models);
        }

        /** 执行服务前（for 操作日志）*/
        public String getDetailBeforeExe(HttpServletRequest request)
        {
                List models = (List)request.getAttribute(this.manager.getEntityClass().getName());
                StringBuffer sb = new StringBuffer(500 * models.size());
                sb.append("<old>");
                for(int i = 0; i < models.size(); i ++)
                {
                        BaseObject bo = (BaseObject)models.get(i);
                        sb.append(bo.getModelDetailXML());
                }
                sb.append("</old>");
                return sb.toString();
        }

        /** 执行服务后（for 操作日志）*/
        public String getDetailAfterExe(HttpServletRequest request)
        {
                return "";
        }
}
